home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / gnugo1_1.lha / gnugo / getmove.c < prev    next >
C/C++ Source or Header  |  1989-03-07  |  3KB  |  100 lines

  1. /*
  2.                 GNU GO - the game of Go (Wei-Chi)
  3.                 Version 1.1   last revised 3-1-89
  4.            Copyright (C) Free Software Foundation, Inc.
  5.                       written by Man L. Li
  6.                       modified by Wayne Iba
  7.                     documented by Bob Webber
  8. */
  9. /*
  10. This program is free software; you can redistribute it and/or modify
  11. it under the terms of the GNU General Public License as published by
  12. the Free Software Foundation - version 1.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License in file COPYING for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program; if not, write to the Free Software
  21. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  
  23. Please report any bug/fix, modification, suggestion to
  24.  
  25. mail address:   Man L. Li
  26.                 Dept. of Computer Science
  27.                 University of Houston
  28.                 4800 Calhoun Road
  29.                 Houston, TX 77004
  30.  
  31. e-mail address: manli@cs.uh.edu         (Internet)
  32.                 coscgbn@uhvax1.bitnet   (BITNET)
  33.                 70070,404               (CompuServe)
  34. */
  35.  
  36. #include <stdio.h>
  37.  
  38. #define EMPTY 0
  39.  
  40. extern unsigned char p[19][19];
  41. extern int mymove, umove;
  42. extern int play, pass;
  43. extern int mk, uk;    /* piece captured */
  44. extern int opn[9];
  45.  
  46. getmove(move, i, j)
  47. /* interpret response of human move to board position */
  48. char move[];
  49. int *i, *j;
  50.   {
  51.    FILE *fp;
  52.    int m, n;
  53.  
  54.    if (strcmp(move, "stop") == 0)
  55. /* stop game */
  56.       play = 0;
  57.    else
  58.      {
  59.       if (strcmp(move, "save") == 0)
  60. /* save data and stop game */
  61.     {
  62.      fp = fopen("gnugo.dat", "w");
  63. /* save board configuration */
  64.      for (m = 0; m < 19; m++)
  65.        for (n = 0; n < 19; n++)
  66.            fprintf(fp, "%c", p[m][n]);
  67. /* my color, pieces captured */
  68.          fprintf(fp, "%d %d %d ", mymove, mk, uk);
  69. /* opening pattern flags */
  70.          for (m = 0; m < 9; m++)
  71.            fprintf(fp, "%d ", opn[m]);
  72.  
  73.      fclose(fp);
  74.      play = -1;
  75.        }
  76.       else
  77.     {
  78.      if (strcmp(move, "pass") == 0)
  79. /* human pass */
  80.        {
  81.         pass++;
  82.         *i = -1;   /* signal pass */
  83.       }
  84.      else
  85.        {
  86.         pass = 0;
  87. /* move[0] from A to T, move[1] move[2] from 1 to 19 */
  88. /* convert move to coordinate */
  89.         if (!getij(move, i, j) || (p[*i][*j] != EMPTY) || suicide(*i, *j))
  90.           {
  91.            printf("illegal move !\n");
  92.            printf("your move? ");
  93.            scanf("%s", move);
  94.            getmove(move, i, j);
  95.          }
  96.      }
  97.        }
  98.     }
  99. }  /* end getmove */
  100.